import mountElement from "./mountElement"
import updateComponent from "./updateComponent"

export default function diffComponent(virtualDOM,oldComponent,oldDOM,container){
    // 先判断是否是同一个组件
    if(isSameComponent(virtualDOM,oldComponent)){
        // 同一个组件 组件更新操作
        updateComponent(virtualDOM,oldComponent,oldDOM,container)
    } else {
        // 不是同一个组件
        mountElement(virtualDOM,container,oldDOM)
    }
}

function isSameComponent(virtualDOM,oldComponent){
    // virtualDOM: 组件实例 其含有type属性  该type是指组件的构造函数
    // oldComponent: 组件的实例对象  组件的实例对象下有constructor  表明组件的构造函数
    return oldComponent && virtualDOM.type === oldComponent.constructor
}